#!/bin/bash

# Gemini CLI - 国内大模型启动脚本
# 使用方法: ./start-chinese-llm.sh [provider]
# 示例: ./start-chinese-llm.sh deepseek

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 打印带颜色的消息
print_info() {
    echo -e "${BLUE}ℹ ${NC}$1"
}

print_success() {
    echo -e "${GREEN}✓${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}⚠${NC} $1"
}

print_error() {
    echo -e "${RED}✗${NC} $1"
}

# 检查 .env 文件
check_env_file() {
    local env_file="$HOME/.gemini/.env"
    
    if [ ! -f "$env_file" ]; then
        print_warning ".env 文件不存在，正在创建..."
        mkdir -p "$HOME/.gemini"
        cat > "$env_file" << 'EOF'
# ===== 模型配置 =====
# 选择提供商: deepseek, qwen, kimi, doubao, glm, openai
LLM_PROVIDER=deepseek

# API Key (取消注释你要使用的)
# DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxx
# QWEN_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxx
# KIMI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxx
# DOUBAO_API_KEY=xxxxxxxxxxxxxxxxxxxxx
# GLM_API_KEY=xxxxxxxxxxxxxxxxxxxxx

# ===== 搜索引擎配置 =====
SEARCH_ENGINE=bing

# Bing 搜索 API Key (推荐)
# BING_SEARCH_API_KEY=your_bing_api_key_here

# 百度搜索 (需要 SerpAPI)
# SERPAPI_KEY=your_serpapi_key_here
EOF
        print_success "已创建 $env_file"
        print_warning "请编辑该文件并配置你的 API Key"
        print_info "编辑命令: nano $env_file 或 vim $env_file"
        exit 0
    fi
}

# 加载 .env 文件
load_env() {
    local env_file="$HOME/.gemini/.env"
    if [ -f "$env_file" ]; then
        export $(grep -v '^#' "$env_file" | xargs)
        print_success "已加载配置: $env_file"
    fi
}

# 检查 API Key
check_api_key() {
    local provider=${1:-$LLM_PROVIDER}
    local key_var=""
    
    case "$provider" in
        deepseek)
            key_var="DEEPSEEK_API_KEY"
            ;;
        qwen)
            key_var="QWEN_API_KEY"
            ;;
        kimi)
            key_var="KIMI_API_KEY"
            ;;
        doubao)
            key_var="DOUBAO_API_KEY"
            ;;
        glm)
            key_var="GLM_API_KEY"
            ;;
        openai)
            key_var="OPENAI_API_KEY"
            ;;
        *)
            print_error "未知的提供商: $provider"
            print_info "支持的提供商: deepseek, qwen, kimi, doubao, glm, openai"
            exit 1
            ;;
    esac
    
    if [ -z "${!key_var}" ]; then
        print_error "未设置 $key_var"
        print_info "请在 $HOME/.gemini/.env 中配置 API Key"
        return 1
    fi
    
    print_success "已配置 $key_var"
    return 0
}

# 显示配置信息
show_config() {
    echo ""
    print_info "当前配置:"
    echo "  提供商: ${LLM_PROVIDER:-未设置}"
    echo "  模型: ${LLM_MODEL:-默认}"
    echo "  搜索引擎: ${SEARCH_ENGINE:-bing}"
    echo ""
}

# 显示使用说明
show_usage() {
    cat << EOF
使用方法:
  $0 [provider]

支持的提供商:
  deepseek  - DeepSeek (推荐，性价比高)
  qwen      - 通义千问 (中文能力强)
  kimi      - Kimi (超长上下文)
  doubao    - 豆包 (字节跳动)
  glm       - GLM (智谱 AI)
  openai    - OpenAI

示例:
  $0 deepseek    # 使用 DeepSeek
  $0 qwen        # 使用通义千问
  $0             # 使用配置文件中的默认提供商

配置文件位置: $HOME/.gemini/.env

获取 API Key:
  DeepSeek: https://platform.deepseek.com/
  通义千问: https://dashscope.aliyun.com/
  Kimi:     https://platform.moonshot.cn/
  豆包:     https://console.volcengine.com/ark
  GLM:      https://open.bigmodel.cn/

搜索 API Key:
  Bing:     https://www.microsoft.com/en-us/bing/apis/bing-web-search-api
  百度:     https://serpapi.com/
EOF
}

# 主函数
main() {
    print_info "Gemini CLI - 国内大模型启动器"
    echo ""
    
    # 处理帮助参数
    if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
        show_usage
        exit 0
    fi
    
    # 检查并创建 .env 文件
    check_env_file
    
    # 加载环境变量
    load_env
    
    # 如果提供了参数，覆盖配置
    if [ -n "$1" ]; then
        export LLM_PROVIDER="$1"
        print_info "使用提供商: $LLM_PROVIDER"
    fi
    
    # 检查 API Key
    if ! check_api_key "$LLM_PROVIDER"; then
        echo ""
        show_usage
        exit 1
    fi
    
    # 显示配置
    show_config
    
    # 检查 wfh-cli 命令是否存在
    if command -v wfh-cli &> /dev/null; then
        print_success "正在启动 WFH CLI..."
        echo ""
        wfh-cli
    elif command -v gemini &> /dev/null; then
        print_success "正在启动 Gemini CLI..."
        echo ""
        gemini
    else
        print_error "未找到 wfh-cli 或 gemini 命令"
        print_info "请先安装: npm link 或 npm install -g ."
        exit 1
    fi
}

# 运行主函数
main "$@"

